草庐IT

Java Class.isAssignableFrom 困惑

全部标签

c++ - 令人困惑的 C++ 全局范围问题

我正在参加C++练习测试,我对一组访问范围和声明点相关问题感到困惑。这两个问题都是相互关联的。我知道答案。我需要的是正确的解释:main结束时局部变量x的值是多少intx=5;intmain(intargc,char**argv){intx=x;return0;}回答:未定义main结束时y的值是多少?constintx=5;intmain(intargc,char**argv){intx[x];inty=sizeof(x)/sizeof(int);return0;}答案:5 最佳答案 来自标准:3.3.1[basic.scope.

哪个上下文使此Perl 6 ZIP操作员感到困惑?

考虑一下我创建哈希的程序。然后,我想更改其中的两个值:my$hash=%(wallet=>100,gave=>0,received=>0,);for^1{$hashZ+=};dd$hash;这样,最后一行for什么也不做,也没有警告。哈希没有变化:Hash$hash=${:gave(0),:received(0),:wallet(100)}添加另一个语句改变了行为:my$hash=%(wallet=>100,gave=>0,received=>0,);for^1{$hashZ+=;True};dd$hash;现在,IntploteEdit可以做到这一点,但是有一个警告(尽管当我发现使用时,我对

c++ - 从类定义中省略 "private"关键字是否令人困惑?

我最近删除了类定义中指定的private,因为它位于顶部,紧跟在class关键字之后:classMyClass{private:intsomeVariable;//...我认为这是多余的。一位同事不同意这一点,称它有效地“隐藏”了数据的private性质。我们的大多数遗留代码都明确声明了访问说明符,并且通常在整个定义中不一致地混合使用它们。我们的类(class)也往往非常大。我正在努力使我的新类足够小,以便我的类定义类似于:classMyClass{//3-4linesofprivatevariablesprotected://3-4linesofprotectedfunctionsp

c++ - 限制未定义行为引起的困惑?

根据我的阅读理解,未定义行为是在编译时为编译器留下几个不同的替代方案的结果。然而,这是否意味着如果遵循严格的编码实践(比如将每个赋值和每个相等放在一个单独的语句中,适当的调试和评论)那么它不应该在寻找未定义的来源方面造成重大问题-行为。此外,对于出现的每个错误,如果您识别代码,您应该知道可以使用哪些语句来代替该特定语句,对吗?编辑:我对您编写了您不想编写的代码的地方不感兴趣。我对按数学逻辑合理的代码无法运行的示例感兴趣。此外,我认为“良好的编码习惯”是每隔几行提供大量信息的注释、适当的缩进和定期调试转储。 最佳答案 未定义的行为不一

c++ - C++中的困惑

我是C++的新手,目前正在学习它。我有几个问题..voidDoSomething(constFoo&foo)和voidDoSomething(Foofoo)之间有什么区别?如果我们不指定&那么实例Foo的将按值传递(而不是引用)。除了在编译时不检查外,它与在参数中使用const+&相同。那么,为什么有const+&成为没有&和const的争论的最佳实践?在C#中,传递对象是“通过引用”,但似乎不是在C++中。我正在读的书说成员函数通过引用传递隐式参数..谁能给我隐式参数的样本和引用?我知道如果我们想通过引用传递对象,我们需要使用&(例如Foo(Person&p))但是C++是如何通过引

c++ - 对 void 及其含义的困惑。

我是编程的新手,对void的作用感到困惑,我知道当你把void放在函数前面时,它意味着“它什么都不返回”但是如果函数什么都不返回那么写的重点是什么功能??无论如何,我在作业中遇到了这个问题,我正在尝试回答它,但需要一些关于一般概念的帮助。任何帮助都会很棒,请尽量避免使用技术术语,我是这里的新手。这个函数完成了什么?voidadd2numbers(doublea,doubleb){doublesum;sum=a+b;} 最佳答案 voidReturnsNothing(){cout如您所见,此函数不返回任何内容,但这并不意味着该函数不执

C++ 头文件 - 困惑!

game.hneeds:-packet.h-socket.hserver.hneeds:-socket.hsocket.hneeds:-game.h当我尝试将socket.h包含到game.h中时,问题就来了,因为socket.h已经包含了game.h。我该如何解决这类问题? 最佳答案 通常的方法,在头文件中使用#ifdef和#define在game.h中:#ifndefGAME_H#defineGAME_H..restofyourheaderfilehere#endif这样,内容会被多次读取,但只定义一次。编辑:删除了每个评论标识

c++ - friend 困惑

$11.4/5-“[...]类中定义的友元函数在定义它的类的(词法)范围内[...]”这句话是什么意思?structA{typedefintMYINT;voidf2(){f();}//Error,'f'isundefinedfriendvoidf(){MYINTmi=0;}//Whydoesthiswork,shouldn'itbeA::MYINT?voidf1(){f();}//Error,'f'isundefined};intmain(){}这里令人困惑的是从“A::f1”调用“f”是完全可以理解的。但是,为什么当friend处于友好类的“词汇”范围内时,从“A::f2”调用“f”

c++ - 关于指针值是编译时常量的困惑

在C++中,指针值可以是编译时常量。这是真的,否则,非类型模板参数和constexpr将无法使用指针。但是,据我所知,静态存储的函数和对象的地址(至少)在链接时而不是编译时是已知的。下面是一个例子:main.cpp#includetemplatevoidf(){std::cout();}a.cppinta=0;我只是想知道在编译main.cpp时如何知道a的地址。我希望有人能给我解释一下。特别是考虑这个templateconstexprstd::size_tf(){return(p+1)==(pp+7)?5:10;}intmain(){intarr[f()]={};}arr的存储应该如

C++ 标准,有点困惑吗?

我知道该标准于1998年获得批准,并于2003年更新以修复该标准(ISO标准)中的一些缺陷,尽管我不确定C++98与ANSIC标准之间的关系。我记得不止一次读到C++1998标准是基于其中一个C标准,我会假设ANSIC89而不是99,这是正确的吗?此外,我假设C++0x是下一个“future”标准的官方别名是否正确,而C++03..11..xx只是针对C++的某些“更新”0x标准,C++11只是11年碰巧发生的更新?对于我来说,我在网上找不到太多东西,例如搜索基于什么和“C++标准列表及其引入的内容”几乎什么也找不到,除非我只是需要一个新鲜的头脑来找到其他任何东西。谢谢。